
<HTML><HEAD><TITLE>JScript.Encode 在线解密</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<SCRIPT language=javascript>
<!--
function screncode(s,l)
{
enc=new ActiveXObject("Scripting.Encoder");
return enc.EncodeScriptFile("."+l,s,0,l+"cript");
}
var STATE_COPY_INPUT = 100
var STATE_READLEN = 101
var STATE_DECODE = 102
var STATE_UNESCAPE = 103

var pick_encoding = new Array(
1, 2, 0, 1, 2, 0, 2, 0, 0, 2, 0, 2, 1, 0, 2, 0,
1, 0, 2, 0, 1, 1, 2, 0, 0, 2, 1, 0, 2, 0, 0, 2,
1, 1, 0, 2, 0, 2, 0, 1, 0, 1, 1, 2, 0, 1, 0, 2,
1, 0, 2, 0, 1, 1, 2, 0, 0, 1, 1, 2, 0, 1, 0, 2
)

var rawData = new Array(
0x64,0x37,0x69, 0x50,0x7E,0x2C, 0x22,0x5A,0x65, 0x4A,0x45,0x72,
0x61,0x3A,0x5B, 0x5E,0x79,0x66, 0x5D,0x59,0x75, 0x5B,0x27,0x4C,
0x42,0x76,0x45, 0x60,0x63,0x76, 0x23,0x62,0x2A, 0x65,0x4D,0x43,
0x5F,0x51,0x33, 0x7E,0x53,0x42, 0x4F,0x52,0x20, 0x52,0x20,0x63,
0x7A,0x26,0x4A, 0x21,0x54,0x5A, 0x46,0x71,0x38, 0x20,0x2B,0x79,
0x26,0x66,0x32, 0x63,0x2A,0x57, 0x2A,0x58,0x6C, 0x76,0x7F,0x2B,
0x47,0x7B,0x46, 0x25,0x30,0x52, 0x2C,0x31,0x4F, 0x29,0x6C,0x3D,
0x69,0x49,0x70, 0x3F,0x3F,0x3F, 0x27,0x78,0x7B, 0x3F,0x3F,0x3F,
0x67,0x5F,0x51, 0x3F,0x3F,0x3F, 0x62,0x29,0x7A, 0x41,0x24,0x7E,
0x5A,0x2F,0x3B, 0x66,0x39,0x47, 0x32,0x33,0x41, 0x73,0x6F,0x77,
0x4D,0x21,0x56, 0x43,0x75,0x5F, 0x71,0x28,0x26, 0x39,0x42,0x78,
0x7C,0x46,0x6E, 0x53,0x4A,0x64, 0x48,0x5C,0x74, 0x31,0x48,0x67,
0x72,0x36,0x7D, 0x6E,0x4B,0x68, 0x70,0x7D,0x35, 0x49,0x5D,0x22,
0x3F,0x6A,0x55, 0x4B,0x50,0x3A, 0x6A,0x69,0x60, 0x2E,0x23,0x6A,
0x7F,0x09,0x71, 0x28,0x70,0x6F, 0x35,0x65,0x49, 0x7D,0x74,0x5C,
0x24,0x2C,0x5D, 0x2D,0x77,0x27, 0x54,0x44,0x59, 0x37,0x3F,0x25,
0x7B,0x6D,0x7C, 0x3D,0x7C,0x23, 0x6C,0x43,0x6D, 0x34,0x38,0x28,
0x6D,0x5E,0x31, 0x4E,0x5B,0x39, 0x2B,0x6E,0x7F, 0x30,0x57,0x36,
0x6F,0x4C,0x54, 0x74,0x34,0x34, 0x6B,0x72,0x62, 0x4C,0x25,0x4E,
0x33,0x56,0x30, 0x56,0x73,0x5E, 0x3A,0x68,0x73, 0x78,0x55,0x09,
0x57,0x47,0x4B, 0x77,0x32,0x61, 0x3B,0x35,0x24, 0x44,0x2E,0x4D,
0x2F,0x64,0x6B, 0x59,0x4F,0x44, 0x45,0x3B,0x21, 0x5C,0x2D,0x37,
0x68,0x41,0x53, 0x36,0x61,0x58, 0x58,0x7A,0x48, 0x79,0x22,0x2E,
0x09,0x60,0x50, 0x75,0x6B,0x2D, 0x38,0x4E,0x29, 0x55,0x3D,0x3F
)

var transformed = new Array()
for (var i=0; i<3; i++) transformed[i] = new Array()
for (var i=31; i<=126; i++) for (var j=0; j<3; j++) transformed[j][rawData[(i-31) * 3 + j]] = (i==31) ? 9 : i

var digits = new Array()
for (var i=0; i<26; i++)
{
digits["A".charCodeAt(0)+i] = i
digits["a".charCodeAt(0)+i] = i+26
}
for (var i=0; i<10; i++) digits["0".charCodeAt(0)+i] = i+52
digits[0x2b] = 62
digits[0x2f] = 63

function unescape(char)
{
var escapes = "#&!*$"
var escaped = "\r\n<>@"

if (char.charCodeAt(0) > 126) return char
if (escapes.indexOf(char) != -1) return escaped.substr(escapes.indexOf(char), 1)
return "?"
}

function decodeBase64(string)
{
var val = 0
val += (digits[string.substr(0,1).charCodeAt(0)] << 2)
val += (digits[string.substr(1,1).charCodeAt(0)] >> 4)
val += (digits[string.substr(1,1).charCodeAt(0)] & 0xf) << 12
val += ((digits[string.substr(2,1).charCodeAt(0)] >> 2) << 8)
val += ((digits[string.substr(2,1).charCodeAt(0)] & 0x3) << 22)
val += (digits[string.substr(3,1).charCodeAt(0)] << 16)
return val
}

function strdec(encodingString)
{

var marker = "#@~^"
var stringIndex = 0
var scriptIndex = -1
var unEncodingIndex = 0
var char = null
var encodingLength = unEncodinglength = 0
var state = STATE_COPY_INPUT
var unEncodingString = ""
var re, arr

while(state)
{
switch (state)
{
case (STATE_COPY_INPUT) :
scriptIndex = encodingString.indexOf(marker, stringIndex)
if (scriptIndex != -1)
{
unEncodingString += encodingString.substring(stringIndex, scriptIndex)
scriptIndex += marker.length
state = STATE_READLEN
}
else
{
stringIndex = stringIndex==0 ? 0 : stringIndex
unEncodingString += encodingString.substr(stringIndex, encodingString.length)
state = 0
}
break

case (STATE_READLEN) :
encodingLength = encodingString.substr(scriptIndex, 6)
unEncodinglength = decodeBase64(encodingLength)
scriptIndex += (6 + "==".length)
state = STATE_DECODE
break

case (STATE_DECODE) :
if (!unEncodinglength)
{
stringIndex = scriptIndex + "DQgAAA==^#~@".length
unEncodingIndex = 0
state = STATE_COPY_INPUT
break
}
char = encodingString.substr(scriptIndex, 1)
if (char == "@") state = STATE_UNESCAPE
else
{
if (char.charCodeAt(0) < 0xFF)
{
unEncodingString += String.fromCharCode(transformed[pick_encoding[unEncodingIndex%64]][char.charCodeAt(0)])
unEncodingIndex++
}
else
{
unEncodingString += char
}
scriptIndex++
unEncodinglength--
break
}

case STATE_UNESCAPE:
unEncodingString += unescape(encodingString.substr(++scriptIndex, 1))
scriptIndex++; unEncodinglength -=2
unEncodingIndex++
state = STATE_DECODE
break
}
}

re = new RegExp("(JScript|VBscript).encode", "gmi")
while(arr = re.exec(unEncodingString)) unEncodingString = RegExp.leftContext + RegExp.$1 + RegExp.rightContext
return unEncodingString
}

//-->
</SCRIPT>
<body style="font-family: tahoma,verdana;font-size: 15px;color:#c0c0c0; background-color: #151515; text-align:center;width:666px;margin:50px">
<div style="color:#c0c0c0; background-color: #151515; text-align:left;width:700px;margin:auto">
<h1 style="color:#ffa500; text-align:center">JScript.Encode 脚本在线解密</h1>
<b style="color:#f6f">用途</b>:<br/>
&emsp;&emsp;1. 解密英文信函（如果您想加密/解密中文信函等等，请查阅 <a href="uniendecode.htm" style="color: #f90;" target=_blank>文本 Unicode 码加密与解密</a> ）；<br/>
&emsp;&emsp;2. 秘密数字信息；<br/>
&emsp;&emsp;3. BBS 等上面发布英文、数字留言；<br/>
&emsp;&emsp;4. 网页解密。<br/><br/>
&emsp;&emsp;此类 JScript.Encode 码解密，只解密英文、符号，对中文文字不解密。<br/>
&emsp;&emsp;使用本页面可以解密 javascript 函数，将 script 标记中的内容复制后进行解密(可多次解密),然后将标记修改为 <em>&lt;script language="javascript"&gt;</em> 即可。<br/><br/>
<b>使用方法</b>：<br/>
&emsp;&emsp; <font color=#ff66ff>解密</font>：源代码粘贴在下面的框内，<font color=#ff66ff>请在解密前先备份您的网页</font><br/>
&emsp;&emsp; <font color=#ff66ff>解密方法</font>：将引号内的乱码贴入按解密即可<br/><br/>
&emsp;&emsp;如果下面无法解密，常见的是以下两种情况：<br/>
&emsp;&emsp;1. 是 unescape 码加密解密，请访问  <a href="uniendecode.htm" style="color: #f90;" target=_blank>文本 Unicode 码加密与解密</a> ）；<br/>
&emsp;&emsp;2. 多次加密，那么您就多按几次解密直到可以阅读为止，Unicode 解密也有这种情况。<br/>
<center>
<form>
<textarea name="codeinput" style="border-right: #696969 1px solid; border-top: #696969 1px solid; color:#c0c0c0; font-size: 14px; background: #202020; border-left: #696969 1px solid; width: 590px; border-bottom: #696969 1px solid; height: 200px"></textarea>
<br/>
<!-- <inputtype="button" onclick="this.form.codeinput.value=screncode(this.form.codeinput.value,'JS')" value="解密"> -->
<input type="button" onclick="this.form.codeinput.value=strdec(this.form.codeinput.value)" value="解密&nbsp;Decode"/>
<input name="reset" id="reset" type="reset" value="重置&nbsp;Reset"/>

 </form>
</center>
<P >&emsp;&emsp;<b style="color:#f6f">说明</b>：解密时应只解密脚本部分，加密脚本标记为 <em>&lt;script language="JScript.Encode"&gt;</em> ，解密后脚本标记应改为：<em>&lt;script language="javascript"&gt;</em></P>
<P><u><b style="color:#f6f">特别注意</b></u>：<b style="color:#f6f">本页面以及您解密后的 jscript 一般只可以在 IE 中运行</b>。此页为 JScript.Encode 解密及加密(暂只能用 M$ 的编码器 Script Encoder 加密)，但是个别动态网页脚本加密后不能使用。</P>
<p align="center"><a href="http://blog.21softs.com/" style="color: #f90;" title="blog.21softs.com">返回总统博客</a></p>

</div>
</body></html>
